A modern computer system may be conceptually divided into hardware, operating system, and application programs. The hardware, (i.e., central processing unit (CPU), memory, persistent storage devices, and input/output (I/O) devices) provides the basic computing resources. The application programs (i.e., compilers, database systems, software, and business programs) define the ways in which these resources are used to solve the computing problems of the users. The users may include people, machines, and other computers that use the application programs, which in turn employ the hardware to solve numerous types of problems.
An operating system is a program that acts as an intermediary between the application program layer and the computer hardware. To this end, the operating system is involved in coordinating the efficient and fair use of a finite resource base to enable a broad range of computative tasks (i.e., memory management, hardware resource management, maintaining a file system, processing user-level requests, administrative tasks, networking tasks, etc.). In some instances, when the operating system dispatches an execution thread to perform a particular computative task, the execution thread may execute until the task has completed. Alternatively, in other instances, the operating system may employ a polling scheme which allows for the computative task to periodically “awaken”, execute, and then “sleep” based upon use a pre-determined time interval.